package br.unesp.demac.ccn07.aula4.jogo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

public class Jogo {

	public static void main(String[] args) {
		
		new UIView().setVisible(true);
		
		// mapeamento de a-zA-Z para 1-26
		HashMap<Character, Integer> longit = new HashMap<Character, Integer>();
		
		Integer num = new Integer(0);
		for(char mychar = 'a'; mychar <= 'z'; mychar++){
			longit.put(mychar, num);
			num++;
		}
		
		num = 0;
		for(char mychar = 'A'; mychar <= 'Z'; mychar++){
			longit.put(mychar, num);
			num++;
		}
		
		// ArrayList de inimigos
		ArrayList<Navio> inimigos = new ArrayList<Navio>();
		
		Navio nav1 = new Navio();
		nav1.setNome("USS Nimitz");
		inimigos.add(nav1);
		Navio nav2 = new Navio();
		nav2.setNome("USS Enterprise");
		inimigos.add(nav2);
		Navio nav3 = new Navio();
		nav3.setNome("USS Kitty Hawk");
		inimigos.add(nav3);
		
		System.out.printf("\nNavios posicionados:\n");
		
		// sorteia posicao e orientacao
		Random rand = new Random();
		for (Navio nav : inimigos){
			
			int randomNum1 = rand.nextInt(4); // longitude
			int randomNum2 = rand.nextInt(4); // latidude
			int vertical = rand.nextInt(2);   // 1 - vertical, 0 - horizontal
			
			System.out.printf("%s\n", nav.getNome());
			
			if (vertical == 1) {
				nav.setCoordenadas(randomNum1, randomNum2);
				nav.setCoordenadas(randomNum1+1, randomNum2);
				nav.setCoordenadas(randomNum1+2, randomNum2);
			}
			else {
				nav.setCoordenadas(randomNum1, randomNum2);
				nav.setCoordenadas(randomNum1, randomNum2+1);
				nav.setCoordenadas(randomNum1, randomNum2+2);
			}
			
		}
		
		Scanner read = new Scanner(System.in);
		System.out.printf("\nPalpites nos formatos: a0 ou A0\n");
		
		int numPalpites = 0;
		
		for (;;){
			System.out.printf("Entre com o palpite: ");
			String temp = read.next();
			String resultado = "Errou.";
	
			for (Navio nav : inimigos) {
				String tempnav = 
					nav.verificaPalpites(longit.get(temp.charAt(0)), Integer.parseInt(temp.substring(1)));
				if (tempnav.compareTo("Acertou.") == 0) {
					resultado = tempnav;
					break;
				}
				else if (tempnav.compareTo("Afundou.") == 0) {
					resultado = "O navio " + nav.getNome() + " afundou.";
					inimigos.remove(nav);
					break;
				}
			}
			
			numPalpites++;
			
			System.out.printf("%s\n", resultado);
			if(inimigos.isEmpty()) break;
		
		}
		System.out.printf("Voce usou %d palpites." , numPalpites);
	}

}
